#include <iostream>
#include <stdio.h>

class CBase1
{
	public:
		CBase1() {
			member = 1;
			printf("CBase()\r\n");
		}

		~CBase1() {
			printf("~CBase1()\r\n");
		}

		virtual void fun1() {
			printf("CBase1::fun1()\r\n");
		}

	private:
		int member;
};

class CBase2
{
	public:
		CBase2() {
			member = 2;
			printf("CBase2()\r\n");
		}

		~CBase2() {
			printf("~CBase2()\r\n");
		}

		virtual void fun2() {
			printf("CBase2::fun2()\r\n");
		}

	private:
		int member;
};

class CDerived : public CBase1, public CBase2 
{
	public:
		CDerived() {
			member = 2;
			printf("CDerived()\r\n");
		}

		~CDerived() {
			printf("~CDerived()\r\n");
		}

		virtual void fun1() {
			printf("CDeriver::fun1()\r\n");
		}

		virtual void fun3() {
			printf("CDerived::fun3()\r\n");
		}

	private:
		int member;
};

int main()
{
	CDerived *derievd;

	derievd = new CDerived;
	derievd->fun1();
	
	delete derievd;

	return 0;
}

/*
	CBase()
	CBase2()
	CDerived()
	CDeriver::fun1()
	~CDerived()
	~CBase2()
	~CBase1()
*/

#if 0
int main()
{
 8048790:	55                   	push   %ebp
 8048791:	89 e5                	mov    %esp,%ebp
 8048793:	56                   	push   %esi
 8048794:	53                   	push   %ebx
 8048795:	83 e4 f0             	and    $0xfffffff0,%esp
 8048798:	83 ec 20             	sub    $0x20,%esp
	CDerived *derievd;

	derievd = new CDerived;
 804879b:	c7 04 24 14 00 00 00 	movl   $0x14,(%esp)
 80487a2:	e8 99 fe ff ff       	call   8048640 <_Znwj@plt>
 80487a7:	89 c3                	mov    %eax,%ebx
 80487a9:	89 1c 24             	mov    %ebx,(%esp)
 80487ac:	e8 5f 01 00 00       	call   8048910 <_ZN8CDerivedC1Ev>
 80487b1:	89 5c 24 1c          	mov    %ebx,0x1c(%esp)
	derievd->fun1();
 80487b5:	8b 44 24 1c          	mov    0x1c(%esp),%eax
 80487b9:	8b 00                	mov    (%eax),%eax
 80487bb:	8b 00                	mov    (%eax),%eax
 80487bd:	8b 54 24 1c          	mov    0x1c(%esp),%edx
 80487c1:	89 14 24             	mov    %edx,(%esp)
 80487c4:	ff d0                	call   *%eax
	
	delete derievd;
 80487c6:	8b 5c 24 1c          	mov    0x1c(%esp),%ebx
 80487ca:	85 db                	test   %ebx,%ebx
 80487cc:	74 10                	je     80487de <main+0x4e>
 80487ce:	89 1c 24             	mov    %ebx,(%esp)
 80487d1:	e8 b4 01 00 00       	call   804898a <_ZN8CDerivedD1Ev>
 80487d6:	89 1c 24             	mov    %ebx,(%esp)
 80487d9:	e8 22 fe ff ff       	call   8048600 <_ZdlPv@plt>

	return 0;
 80487de:	b8 00 00 00 00       	mov    $0x0,%eax
 80487e3:	eb 14                	jmp    80487f9 <main+0x69>
 80487e5:	89 c6                	mov    %eax,%esi

int main()
{
	CDerived *derievd;

	derievd = new CDerived;
 80487e7:	89 1c 24             	mov    %ebx,(%esp)
 80487ea:	e8 11 fe ff ff       	call   8048600 <_ZdlPv@plt>
 80487ef:	89 f0                	mov    %esi,%eax
 80487f1:	89 04 24             	mov    %eax,(%esp)
 80487f4:	e8 77 fe ff ff       	call   8048670 <_Unwind_Resume@plt>
	derievd->fun1();
	
	delete derievd;

	return 0;
}
 80487f9:	8d 65 f8             	lea    -0x8(%ebp),%esp
 80487fc:	5b                   	pop    %ebx
 80487fd:	5e                   	pop    %esi
 80487fe:	5d                   	pop    %ebp
 80487ff:	c3                   	ret    
#endif

#if 0

/*
 * intel
 */
00000000000011e9 <main>:
    11e9:	f3 0f 1e fa          	endbr64 
    11ed:	55                   	push   %rbp
    11ee:	48 89 e5             	mov    %rsp,%rbp
    11f1:	41 54                	push   %r12
    11f3:	53                   	push   %rbx
    11f4:	48 83 ec 10          	sub    $0x10,%rsp
    11f8:	bf 20 00 00 00       	mov    $0x20,%edi	// edi=0x20
    11fd:	e8 ae fe ff ff       	callq  10b0 <_Znwm@plt>	// new(0x20)
    1202:	48 89 c3             	mov    %rax,%rbx	// rbx=rax
    1205:	48 89 df             	mov    %rbx,%rdi	// rdi=rbx
    1208:	e8 d7 01 00 00       	callq  13e4 <_ZN8CDerivedC1Ev>
    120d:	48 89 5d e8          	mov    %rbx,-0x18(%rbp)	// (rbp-0x18)=rbx
    1211:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    1215:	48 8b 00             	mov    (%rax),%rax	// rax=(rax)
    1218:	48 8b 10             	mov    (%rax),%rdx	// rdx=(rax)
    121b:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    121f:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    1222:	ff d2                	callq  *%rdx		// rdx()
    1224:	48 8b 5d e8          	mov    -0x18(%rbp),%rbx	// rbx=(rbp-0x18)
    1228:	48 85 db             	test   %rbx,%rbx	// rbx&rbx
    122b:	74 15                	je     1242 <main+0x59>	// == jump
    122d:	48 89 df             	mov    %rbx,%rdi	// rdi=rbx
    1230:	e8 51 02 00 00       	callq  1486 <_ZN8CDerivedD1Ev>
    1235:	be 20 00 00 00       	mov    $0x20,%esi	// esi=0x20
    123a:	48 89 df             	mov    %rbx,%rdi	// rdi=rbx
    123d:	e8 7e fe ff ff       	callq  10c0 <_ZdlPvm@plt>
    1242:	b8 00 00 00 00       	mov    $0x0,%eax	// eax=0
    1247:	eb 1f                	jmp    1268 <main+0x7f>	// jump
    1249:	f3 0f 1e fa          	endbr64 
    124d:	49 89 c4             	mov    %rax,%r12	// r12=rax
    1250:	be 20 00 00 00       	mov    $0x20,%esi	// esi=0x20
    1255:	48 89 df             	mov    %rbx,%rdi	// rdi=rbx
    1258:	e8 63 fe ff ff       	callq  10c0 <_ZdlPvm@plt>
    125d:	4c 89 e0             	mov    %r12,%rax	// rax=r12
    1260:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    1263:	e8 88 fe ff ff       	callq  10f0 <_Unwind_Resume@plt>
    1268:	48 83 c4 10          	add    $0x10,%rsp	// rsp+=0x10
    126c:	5b                   	pop    %rbx
    126d:	41 5c                	pop    %r12
    126f:	5d                   	pop    %rbp
    1270:	c3                   	retq   

00000000000012d8 <_ZN6CBase1C1Ev>:
    12d8:	f3 0f 1e fa          	endbr64 
    12dc:	55                   	push   %rbp
    12dd:	48 89 e5             	mov    %rsp,%rbp
    12e0:	48 83 ec 10          	sub    $0x10,%rsp
    12e4:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    12e8:	48 8d 15 29 2a 00 00 	lea    0x2a29(%rip),%rdx        # 3d18 <_ZTV6CBase1+0x10>
    12ef:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    12f3:	48 89 10             	mov    %rdx,(%rax)	// (rax)=rdx
    12f6:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    12fa:	c7 40 08 01 00 00 00 	movl   $0x1,0x8(%rax)	// (rax+0x8)=0x1
    1301:	48 8d 3d fd 0c 00 00 	lea    0xcfd(%rip),%rdi        # 2005 <_ZStL19piecewise_construct+0x1>
    1308:	e8 d3 fd ff ff       	callq  10e0 <puts@plt>
    130d:	90                   	nop
    130e:	c9                   	leaveq 
    130f:	c3                   	retq   

0000000000001310 <_ZN6CBase1D1Ev>:
    1310:	f3 0f 1e fa          	endbr64 
    1314:	55                   	push   %rbp
    1315:	48 89 e5             	mov    %rsp,%rbp
    1318:	48 83 ec 10          	sub    $0x10,%rsp
    131c:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    1320:	48 8d 15 f1 29 00 00 	lea    0x29f1(%rip),%rdx        # 3d18 <_ZTV6CBase1+0x10>
    1327:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    132b:	48 89 10             	mov    %rdx,(%rax)	// (rax)=rdx
    132e:	48 8d 3d d9 0c 00 00 	lea    0xcd9(%rip),%rdi        # 200e <_ZStL19piecewise_construct+0xa>
    1335:	e8 a6 fd ff ff       	callq  10e0 <puts@plt>
    133a:	90                   	nop
    133b:	c9                   	leaveq 
    133c:	c3                   	retq   
    133d:	90                   	nop

000000000000133e <_ZN6CBase14fun1Ev>:
    133e:	f3 0f 1e fa          	endbr64 
    1342:	55                   	push   %rbp
    1343:	48 89 e5             	mov    %rsp,%rbp
    1346:	48 83 ec 10          	sub    $0x10,%rsp
    134a:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    134e:	48 8d 3d c4 0c 00 00 	lea    0xcc4(%rip),%rdi        # 2019 <_ZStL19piecewise_construct+0x15>
    1355:	e8 86 fd ff ff       	callq  10e0 <puts@plt>
    135a:	90                   	nop
    135b:	c9                   	leaveq 
    135c:	c3                   	retq   
    135d:	90                   	nop

000000000000135e <_ZN6CBase2C1Ev>:
    135e:	f3 0f 1e fa          	endbr64 
    1362:	55                   	push   %rbp
    1363:	48 89 e5             	mov    %rsp,%rbp
    1366:	48 83 ec 10          	sub    $0x10,%rsp
    136a:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    136e:	48 8d 15 8b 29 00 00 	lea    0x298b(%rip),%rdx        # 3d00 <_ZTV6CBase2+0x10>
    1375:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	//rax=(rbp-0x8)
    1379:	48 89 10             	mov    %rdx,(%rax)	// (rax)=rdx
    137c:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    1380:	c7 40 08 02 00 00 00 	movl   $0x2,0x8(%rax)	// (rax+0x8)=0x2
    1387:	48 8d 3d 9b 0c 00 00 	lea    0xc9b(%rip),%rdi        # 2029 <_ZStL19piecewise_construct+0x25>
    138e:	e8 4d fd ff ff       	callq  10e0 <puts@plt>
    1393:	90                   	nop
    1394:	c9                   	leaveq 
    1395:	c3                   	retq   

0000000000001396 <_ZN6CBase2D1Ev>:
    1396:	f3 0f 1e fa          	endbr64 
    139a:	55                   	push   %rbp
    139b:	48 89 e5             	mov    %rsp,%rbp
    139e:	48 83 ec 10          	sub    $0x10,%rsp
    13a2:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    13a6:	48 8d 15 53 29 00 00 	lea    0x2953(%rip),%rdx        # 3d00 <_ZTV6CBase2+0x10>
    13ad:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    13b1:	48 89 10             	mov    %rdx,(%rax)	// (rax)=rdx
    13b4:	48 8d 3d 78 0c 00 00 	lea    0xc78(%rip),%rdi        # 2033 <_ZStL19piecewise_construct+0x2f>
    13bb:	e8 20 fd ff ff       	callq  10e0 <puts@plt>
    13c0:	90                   	nop
    13c1:	c9                   	leaveq 
    13c2:	c3                   	retq   
    13c3:	90                   	nop

00000000000013c4 <_ZN6CBase24fun2Ev>:
    13c4:	f3 0f 1e fa          	endbr64 
    13c8:	55                   	push   %rbp
    13c9:	48 89 e5             	mov    %rsp,%rbp
    13cc:	48 83 ec 10          	sub    $0x10,%rsp
    13d0:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    13d4:	48 8d 3d 63 0c 00 00 	lea    0xc63(%rip),%rdi        # 203e <_ZStL19piecewise_construct+0x3a>
    13db:	e8 00 fd ff ff       	callq  10e0 <puts@plt>
    13e0:	90                   	nop
    13e1:	c9                   	leaveq 
    13e2:	c3                   	retq   
    13e3:	90                   	nop

00000000000013e4 <_ZN8CDerivedC1Ev>:
    13e4:	f3 0f 1e fa          	endbr64 
    13e8:	55                   	push   %rbp
    13e9:	48 89 e5             	mov    %rsp,%rbp
    13ec:	53                   	push   %rbx
    13ed:	48 83 ec 18          	sub    $0x18,%rsp	
    13f1:	48 89 7d e8          	mov    %rdi,-0x18(%rbp)	// (rbp-0x18)=rdi
    13f5:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    13f9:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    13fc:	e8 d7 fe ff ff       	callq  12d8 <_ZN6CBase1C1Ev>
    1401:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    1405:	48 83 c0 10          	add    $0x10,%rax	// rax+=0x10
    1409:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    140c:	e8 4d ff ff ff       	callq  135e <_ZN6CBase2C1Ev>
    1411:	48 8d 15 b0 28 00 00 	lea    0x28b0(%rip),%rdx        # 3cc8 <_ZTV8CDerived+0x10>
    1418:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    141c:	48 89 10             	mov    %rdx,(%rax)	// (rax)=rdx
    141f:	48 8d 15 c2 28 00 00 	lea    0x28c2(%rip),%rdx        # 3ce8 <_ZTV8CDerived+0x30>
    1426:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    142a:	48 89 50 10          	mov    %rdx,0x10(%rax)	// (rqx+0x10)=rdx
    142e:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    1432:	c7 40 1c 02 00 00 00 	movl   $0x2,0x1c(%rax)	// (rax+0x1c)=0x2
    1439:	48 8d 3d 0e 0c 00 00 	lea    0xc0e(%rip),%rdi        # 204e <_ZStL19piecewise_construct+0x4a>
    1440:	e8 9b fc ff ff       	callq  10e0 <puts@plt>
    1445:	eb 37                	jmp    147e <_ZN8CDerivedC1Ev+0x9a>
    1447:	f3 0f 1e fa          	endbr64 
    144b:	48 89 c3             	mov    %rax,%rbx	// rbx=rax
    144e:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    1452:	48 83 c0 10          	add    $0x10,%rax	// rax+=0x10
    1456:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    1459:	e8 38 ff ff ff       	callq  1396 <_ZN6CBase2D1Ev>
    145e:	eb 07                	jmp    1467 <_ZN8CDerivedC1Ev+0x83>
    1460:	f3 0f 1e fa          	endbr64 
    1464:	48 89 c3             	mov    %rax,%rbx	// rbx=rax
    1467:	48 8b 45 e8          	mov    -0x18(%rbp),%rax	// rax=(rbp-0x18)
    146b:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    146e:	e8 9d fe ff ff       	callq  1310 <_ZN6CBase1D1Ev>
    1473:	48 89 d8             	mov    %rbx,%rax	// rax=rbx
    1476:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    1479:	e8 72 fc ff ff       	callq  10f0 <_Unwind_Resume@plt>
    147e:	48 83 c4 18          	add    $0x18,%rsp
    1482:	5b                   	pop    %rbx
    1483:	5d                   	pop    %rbp
    1484:	c3                   	retq   
    1485:	90                   	nop

0000000000001486 <_ZN8CDerivedD1Ev>:
    1486:	f3 0f 1e fa          	endbr64 
    148a:	55                   	push   %rbp
    148b:	48 89 e5             	mov    %rsp,%rbp
    148e:	48 83 ec 10          	sub    $0x10,%rsp
    1492:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    1496:	48 8d 15 2b 28 00 00 	lea    0x282b(%rip),%rdx        # 3cc8 <_ZTV8CDerived+0x10>
    149d:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    14a1:	48 89 10             	mov    %rdx,(%rax)	// (rax)=rdx
    14a4:	48 8d 15 3d 28 00 00 	lea    0x283d(%rip),%rdx        # 3ce8 <_ZTV8CDerived+0x30>
    14ab:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rdx=(rbp-0x8)
    14af:	48 89 50 10          	mov    %rdx,0x10(%rax)	// (rax+0x10)=rdx
    14b3:	48 8d 3d a0 0b 00 00 	lea    0xba0(%rip),%rdi        # 205a <_ZStL19piecewise_construct+0x56>
    14ba:	e8 21 fc ff ff       	callq  10e0 <puts@plt>
    14bf:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    14c3:	48 83 c0 10          	add    $0x10,%rax	// rax+=0x10
    14c7:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    14ca:	e8 c7 fe ff ff       	callq  1396 <_ZN6CBase2D1Ev>
    14cf:	48 8b 45 f8          	mov    -0x8(%rbp),%rax	// rax=(rbp-0x8)
    14d3:	48 89 c7             	mov    %rax,%rdi	// rdi=rax
    14d6:	e8 35 fe ff ff       	callq  1310 <_ZN6CBase1D1Ev>
    14db:	90                   	nop
    14dc:	c9                   	leaveq 
    14dd:	c3                   	retq   

00000000000014de <_ZN8CDerived4fun1Ev>:
    14de:	f3 0f 1e fa          	endbr64 
    14e2:	55                   	push   %rbp
    14e3:	48 89 e5             	mov    %rsp,%rbp
    14e6:	48 83 ec 10          	sub    $0x10,%rsp
    14ea:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    14ee:	48 8d 3d 72 0b 00 00 	lea    0xb72(%rip),%rdi        # 2067 <_ZStL19piecewise_construct+0x63>
    14f5:	e8 e6 fb ff ff       	callq  10e0 <puts@plt>
    14fa:	90                   	nop
    14fb:	c9                   	leaveq 
    14fc:	c3                   	retq   
    14fd:	90                   	nop

00000000000014fe <_ZN8CDerived4fun3Ev>:
    14fe:	f3 0f 1e fa          	endbr64 
    1502:	55                   	push   %rbp
    1503:	48 89 e5             	mov    %rsp,%rbp
    1506:	48 83 ec 10          	sub    $0x10,%rsp
    150a:	48 89 7d f8          	mov    %rdi,-0x8(%rbp)	// (rbp-0x8)=rdi
    150e:	48 8d 3d 64 0b 00 00 	lea    0xb64(%rip),%rdi        # 2079 <_ZStL19piecewise_construct+0x75>
    1515:	e8 c6 fb ff ff       	callq  10e0 <puts@plt>
    151a:	90                   	nop
    151b:	c9                   	leaveq 
    151c:	c3                   	retq   
    151d:	0f 1f 00             	nopl   (%rax)

/*
 * arm
 */
00000000004009dc <main>:
  4009dc:	a9bd7bfd 	stp	x29, x30, [sp, #-48]!
  4009e0:	910003fd 	mov	x29, sp
  4009e4:	a90153f3 	stp	x19, x20, [sp, #16]
  4009e8:	d2800400 	mov	x0, #0x20                  	// #32
  4009ec:	97ffffb5 	bl	4008c0 <_Znwm@plt>	// new(0x20)
  4009f0:	aa0003f3 	mov	x19, x0		// x19=x0
  4009f4:	aa1303e0 	mov	x0, x19		// x0=x19
  4009f8:	94000085 	bl	400c0c <_ZN8CDerivedC1Ev>
  4009fc:	f90017b3 	str	x19, [x29, #40]	// [x29+40]=x19
  400a00:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400a04:	f9400000 	ldr	x0, [x0]	// x0=[x0]
  400a08:	f9400001 	ldr	x1, [x0]	// x1=[x0]
  400a0c:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400a10:	d63f0020 	blr	x1		// x1()
  400a14:	f94017b3 	ldr	x19, [x29, #40]	// x19=[x29+40]
  400a18:	f100027f 	cmp	x19, #0x0	// x19-0x0
  400a1c:	540000c0 	b.eq	400a34 <main+0x58>  // b.none
  400a20:	aa1303e0 	mov	x0, x19	// x0=x19
  400a24:	9400009f 	bl	400ca0 <_ZN8CDerivedD1Ev>
  400a28:	d2800401 	mov	x1, #0x20                  	// #32
  400a2c:	aa1303e0 	mov	x0, x19	// x0=x19
  400a30:	97ffff88 	bl	400850 <_ZdlPvm@plt>
  400a34:	52800000 	mov	w0, #0x0                   	// #0
  400a38:	14000007 	b	400a54 <main+0x78>
  400a3c:	aa0003f4 	mov	x20, x0	// x20=x0
  400a40:	d2800401 	mov	x1, #0x20                  	// #32
  400a44:	aa1303e0 	mov	x0, x19	// x0=x19
  400a48:	97ffff82 	bl	400850 <_ZdlPvm@plt>
  400a4c:	aa1403e0 	mov	x0, x20	// x0=x20
  400a50:	97ffffa0 	bl	4008d0 <_Unwind_Resume@plt>
  400a54:	a94153f3 	ldp	x19, x20, [sp, #16]
  400a58:	a8c37bfd 	ldp	x29, x30, [sp], #48
  400a5c:	d65f03c0 	ret

0000000000400adc <_ZN6CBase1C1Ev>:
  400adc:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400ae0:	910003fd 	mov	x29, sp
  400ae4:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400ae8:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400aec:	913c2001 	add	x1, x0, #0xf08
  400af0:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400af4:	f9000001 	str	x1, [x0]	// [x0]=x1
  400af8:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400afc:	52800021 	mov	w1, #0x1                   	// #1
  400b00:	b9000801 	str	w1, [x0, #8]	// [x0+8]=w1
  400b04:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400b08:	9137e000 	add	x0, x0, #0xdf8
  400b0c:	97ffff65 	bl	4008a0 <puts@plt>
  400b10:	d503201f 	nop
  400b14:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400b18:	d65f03c0 	ret

0000000000400b1c <_ZN6CBase1D1Ev>:
  400b1c:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400b20:	910003fd 	mov	x29, sp
  400b24:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400b28:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400b2c:	913c2001 	add	x1, x0, #0xf08
  400b30:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400b34:	f9000001 	str	x1, [x0]	// [x0]=x1
  400b38:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400b3c:	91382000 	add	x0, x0, #0xe08
  400b40:	97ffff58 	bl	4008a0 <puts@plt>
  400b44:	d503201f 	nop
  400b48:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400b4c:	d65f03c0 	ret

0000000000400b50 <_ZN6CBase14fun1Ev>:
  400b50:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400b54:	910003fd 	mov	x29, sp
  400b58:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400b5c:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400b60:	91386000 	add	x0, x0, #0xe18
  400b64:	97ffff4f 	bl	4008a0 <puts@plt>
  400b68:	d503201f 	nop
  400b6c:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400b70:	d65f03c0 	ret

0000000000400b74 <_ZN6CBase2C1Ev>:
  400b74:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400b78:	910003fd 	mov	x29, sp
  400b7c:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400b80:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400b84:	913bc001 	add	x1, x0, #0xef0
  400b88:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400b8c:	f9000001 	str	x1, [x0]	// [x0]=x1
  400b90:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400b94:	52800041 	mov	w1, #0x2                   	// #2
  400b98:	b9000801 	str	w1, [x0, #8]	// [x0+8]=w1
  400b9c:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400ba0:	9138a000 	add	x0, x0, #0xe28
  400ba4:	97ffff3f 	bl	4008a0 <puts@plt>
  400ba8:	d503201f 	nop
  400bac:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400bb0:	d65f03c0 	ret

0000000000400bb4 <_ZN6CBase2D1Ev>:
  400bb4:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400bb8:	910003fd 	mov	x29, sp
  400bbc:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400bc0:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400bc4:	913bc001 	add	x1, x0, #0xef0
  400bc8:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400bcc:	f9000001 	str	x1, [x0]	// [x0]=x1
  400bd0:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400bd4:	9138e000 	add	x0, x0, #0xe38
  400bd8:	97ffff32 	bl	4008a0 <puts@plt>
  400bdc:	d503201f 	nop
  400be0:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400be4:	d65f03c0 	ret

0000000000400be8 <_ZN6CBase24fun2Ev>:
  400be8:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400bec:	910003fd 	mov	x29, sp
  400bf0:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400bf4:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400bf8:	91392000 	add	x0, x0, #0xe48
  400bfc:	97ffff29 	bl	4008a0 <puts@plt>
  400c00:	d503201f 	nop
  400c04:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400c08:	d65f03c0 	ret

0000000000400c0c <_ZN8CDerivedC1Ev>:
  400c0c:	a9bd7bfd 	stp	x29, x30, [sp, #-48]!
  400c10:	910003fd 	mov	x29, sp
  400c14:	f9000bf3 	str	x19, [sp, #16]	// [sp+16]=x19
  400c18:	f90017a0 	str	x0, [x29, #40]	// [x29+40]=x0
  400c1c:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400c20:	97ffffaf 	bl	400adc <_ZN6CBase1C1Ev>
  400c24:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400c28:	91004000 	add	x0, x0, #0x10	// x0=x0+0x10
  400c2c:	97ffffd2 	bl	400b74 <_ZN6CBase2C1Ev>
  400c30:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400c34:	913ae001 	add	x1, x0, #0xeb8
  400c38:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400c3c:	f9000001 	str	x1, [x0]	// [x0]=x1
  400c40:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400c44:	913b6001 	add	x1, x0, #0xed8
  400c48:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400c4c:	f9000801 	str	x1, [x0, #16]	// [x0+16]=x1
  400c50:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400c54:	52800041 	mov	w1, #0x2                   	// #2
  400c58:	b9001c01 	str	w1, [x0, #28]	// [x0+28]=w1
  400c5c:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400c60:	91396000 	add	x0, x0, #0xe58
  400c64:	97ffff0f 	bl	4008a0 <puts@plt>
  400c68:	1400000b 	b	400c94 <_ZN8CDerivedC1Ev+0x88>
  400c6c:	aa0003f3 	mov	x19, x0		// x19=x0
  400c70:	f94017a0 	ldr	x0, [x29, #40]	// x0=[x29+40]
  400c74:	91004000 	add	x0, x0, #0x10	// x0=x0+0x10
  400c78:	97ffffcf 	bl	400bb4 <_ZN6CBase2D1Ev>
  400c7c:	14000002 	b	400c84 <_ZN8CDerivedC1Ev+0x78>
  400c80:	aa0003f3 	mov	x19, x0
  400c84:	f94017a0 	ldr	x0, [x29, #40]
  400c88:	97ffffa5 	bl	400b1c <_ZN6CBase1D1Ev>
  400c8c:	aa1303e0 	mov	x0, x19
  400c90:	97ffff10 	bl	4008d0 <_Unwind_Resume@plt>
  400c94:	f9400bf3 	ldr	x19, [sp, #16]
  400c98:	a8c37bfd 	ldp	x29, x30, [sp], #48
  400c9c:	d65f03c0 	ret

0000000000400ca0 <_ZN8CDerivedD1Ev>:
  400ca0:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400ca4:	910003fd 	mov	x29, sp
  400ca8:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400cac:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400cb0:	913ae001 	add	x1, x0, #0xeb8
  400cb4:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400cb8:	f9000001 	str	x1, [x0]	// [x0]=x1
  400cbc:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400cc0:	913b6001 	add	x1, x0, #0xed8
  400cc4:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400cc8:	f9000801 	str	x1, [x0, #16]	// [x0+16]=x1
  400ccc:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400cd0:	9139a000 	add	x0, x0, #0xe68
  400cd4:	97fffef3 	bl	4008a0 <puts@plt>
  400cd8:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400cdc:	91004000 	add	x0, x0, #0x10	// x0=x0+0x10
  400ce0:	97ffffb5 	bl	400bb4 <_ZN6CBase2D1Ev>
  400ce4:	f9400fa0 	ldr	x0, [x29, #24]	// x0=[x29+24]
  400ce8:	97ffff8d 	bl	400b1c <_ZN6CBase1D1Ev>
  400cec:	d503201f 	nop
  400cf0:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400cf4:	d65f03c0 	ret

0000000000400cf8 <_ZN8CDerived4fun1Ev>:
  400cf8:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400cfc:	910003fd 	mov	x29, sp
  400d00:	f9000fa0 	str	x0, [x29, #24]	// x0=[x29+24]
  400d04:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400d08:	9139e000 	add	x0, x0, #0xe78
  400d0c:	97fffee5 	bl	4008a0 <puts@plt>
  400d10:	d503201f 	nop
  400d14:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400d18:	d65f03c0 	ret

0000000000400d1c <_ZN8CDerived4fun3Ev>:
  400d1c:	a9be7bfd 	stp	x29, x30, [sp, #-32]!
  400d20:	910003fd 	mov	x29, sp
  400d24:	f9000fa0 	str	x0, [x29, #24]	// [x29+24]=x0
  400d28:	90000000 	adrp	x0, 400000 <_init-0x7f0>
  400d2c:	913a4000 	add	x0, x0, #0xe90
  400d30:	97fffedc 	bl	4008a0 <puts@plt>
  400d34:	d503201f 	nop
  400d38:	a8c27bfd 	ldp	x29, x30, [sp], #32
  400d3c:	d65f03c0 	ret

#endif
